u`
eLXgсFp.310uCxgv
Q[JKFhԂA̕`A^CgʂƉʑJ Ȃ

p.310 Cxg

ER\[AvP[VɂConsole.ReadLinê悤ɁANvOIɏ𓾂i
EA͒PȂ͑҂łAvO̐͂łȂ(OSɐnĂ܂)
EŁA\߁uꂪN炱vƂ`łAIɌĂяod|Ƃėpӂꂽ̂Cxg
EL[́A}EX̑AʐM̎MȂǂ́uNvƂCxg̔ƂACxgɑ΂ďŝCxgnhƂB
@ Cxg̊TOp͌ɂقȂAJavał̓CxgXi
Ƃ(ꕔC#nł̕\ŌĂԂƂ)
EC#ł͎ɃtH[AvP[VŃCxgAR\[AvP[VłfQ[gp邱ƂŃCxg̎\
EႦ΁AEnterL[ȊÕL[͂𑦎Ɏ󂯎d|ł

p.312 Cxg̃vO~O

ER\[AvP[VŃfQ[gpăCxgɂ́AIɃCxg𔭐A󂯂ď郁\bhLq
EƂẮA܂ACxg̔SNX`A̒ɃCxgtB[hƌĂ΂fQ[gƁACxg𔭐郁\bhLqB
ECxgtB[h́AfQ[g^ƂpublicoŁAoCxgɂȂ
EF public event fQ[g Cxg;
 ܂ACxg̔SNXɂ̓\bhf[^oɉăCxgLq
ECxg𔭐郁\bh́AʏuOnv{uCxgv\bhƂĒ`A̒ŃCxg\bhƓlɌĂяoƂŃCxg𔭐B
EF public void/߂l^ OnCxg() {c} 
Ẽ\bh̒ŃCxgpăCxg𔭐邪ACxgtB[h̏oĂȂ(Cxgnullł)̎ɌĂяoĂ܂Ȃ悤ɗӂ
EF if (Cxg != null) { Cxg(); }
ẼNXpāACxgsMain\bh̋Lq@
@@ Cxg̔SNX̃CX^X𐶐
@A Cxg̔ɂ蓮삳\bhĩNX̃\bhłǂj
@B @̎Qƕϐ.Cxgɑ΂āAA}`LXgfQ[Vw肷邱Ƃœo^
@C @̎Qƕϐ.OnCxg()\bhĂяoƂŃCxg𔭐

p.313 event01.cs

//p.313 event01.cs
using System;
delegate void MyDelegate(); //fQ[g̐錾(߂lȂAȂ)
class MyEventClass { //Cxg̔SNX
    public event MyDelegate eventname; //CxgtB[hCxgevantnameŒ`
    public void OnEventname() { //evantnameCxg𔭐郁\bh
        if (eventname != null) //CxgtB[h()łȂ
            eventname(); //Cxg𔭐
    }
}
class MyClass { //Cxg̔ɂs\bh@NX
    public void show() { //Cxg̔ɂs\bh@
        Console.WriteLine("show");
    }
}
class MyClass2 { //Cxg̔ɂs\bhANX
    public void show2() { //Cxg̔ɂs\bhA
        Console.WriteLine("show2!!");
    }
}
class event01 {
    public static void Main() {
        MyClass mc = new MyClass(); //Cxg̔ɂs\bh@NX̃CX^X𐶐
        MyClass2 mc2 = new MyClass2(); //Cxg̔ɂs\bhANX̃CX^X𐶐
        MyEventClass myevent = new MyEventClass(); //Cxg̔SNX̃CX^X𐶐
        myevent.eventname += new MyDelegate(mc.show); //Cxgɑ΂ć@}`LXgfQ[Vw肷邱Ƃœo^
        myevent.eventname += new MyDelegate(mc2.show2); //Cxgɑ΂ćA}`LXgfQ[Vw肷邱Ƃœo^
        myevent.OnEventname(); //Cxg𔭐
    }
}

AWKFp.313 event01.cs

E}`LXgfQ[V_ŋLq悤

쐬

//AWKFp.313 event01.cs
using System;
delegate void MyDelegate(); //fQ[g̐錾(߂lȂAȂ)
class MyEventClass { //Cxg̔SNX
    public event MyDelegate eventname; //CxgtB[hCxgevantnameŒ`
    public void OnEventname() { //evantnameCxg𔭐郁\bh
        if (eventname != null) //CxgtB[h()łȂ
            eventname(); //Cxg𔭐
    }
}
class MyClass { //Cxg̔ɂs\bh@NX
    public void show() { //Cxg̔ɂs\bh@
        Console.WriteLine("show");
    }
}
class MyClass2 { //Cxg̔ɂs\bhANX
    public void show2() { //Cxg̔ɂs\bhA
        Console.WriteLine("show2!!");
    }
}
class event01 {
    public static void Main() {
        MyClass mc = new MyClass(); //Cxg̔ɂs\bh@NX̃CX^X𐶐
        MyClass2 mc2 = new MyClass2(); //Cxg̔ɂs\bhANX̃CX^X𐶐
        MyEventClass myevent = new MyEventClass(); //Cxg̔SNX̃CX^X𐶐
        myevent.eventname += () => mc.show(); //Cxgɑ΂ć@}`LXgfQ[Vw肷邱Ƃœo^
        myevent.eventname += () => mc2.show2(); //Cxgɑ΂ćA}`LXgfQ[Vw肷邱Ƃœo^
        myevent.OnEventname(); //Cxg𔭐
    }
}

AWKFp.313 event01.cs

E}`LXgfQ[V𓽖\bhŋLq悤
EƁACxg̔ɂs\bhQNXsvɂȂ

쐬

//AWKFp.313 event01.cs
using System;
delegate void MyDelegate(); //fQ[g̐錾(߂lȂAȂ)
class MyEventClass { //Cxg̔SNX
    public event MyDelegate eventname; //CxgtB[hCxgevantnameŒ`
    public void OnEventname() { //evantnameCxg𔭐郁\bh
        if (eventname != null) //CxgtB[h()łȂ
            eventname(); //Cxg𔭐
    }
}
class event01 {
    public static void Main() {
        MyEventClass myevent = new MyEventClass(); //Cxg̔SNX̃CX^X𐶐
        myevent.eventname += () => {Console.WriteLine("show");}; //Cxgɑ΂ē\bh}`LXgfQ[Vw肷
        myevent.eventname += () => {Console.WriteLine("show2");}; //Cxgɑ΂ē\bh}`LXgfQ[Vw肷
        myevent.OnEventname(); //Cxg𔭐
    }
}

p.316 Char\̂ƐÓI\bh

ESystem.Char\̂C#񋟂镶p̍\̂ŁA֗ȐÓI\bh񋟂
 charvpeBɑOu.NET^Syster.CharɏAS\̂Ƃ݂Ȃ
Ebool Char.IsDigit(char)F1󂯎10i(0`9)ł邩ǂԂ
Edouble Char.GetNumericValue(char)F1󂯎ĎϊĕԂ(ϊs-1.0Ԃ)
 double.Parse("" + char)  Convert.ToDouble("" + char) ƗގA͕ϊsُ͈I

p.317 ConsoleKeyInfo\̂ƃvpeB

ESystem.ConsoleKeyInfo\̂́AꂽL[̏Ԃ߂̃f[^\ƁA֗ȃvpeB\
EConsoleNX񋟂ReadKey\bh̖߂l^ConsoleKeyInfo\̂łÃ\bhsƁAꂽL[̏̍\̂Ɋi[Ă
E̎AƂăL[̃R\[̂ւ̔\trueŎwł
EF ConsoleKeyInfo ϐ = Console.ReadKey(true);
Ebool Console.KeyAvailablevpeB(p.293)ŁAL[͂ǂ̂ŁAꂪtrueł΁AReadKey\bhpƗǂ
EāAConsoleKeyInfo\̂char KeyCharvpeBŁAĂ

p.315 event02.cs

//p.315 event02.cs
using System;
delegate void Handler(char ch); //fQ[g̐錾(߂lȂAL)
class EventClass { //Cxg̔SNX
    public event Handler KeyHit; //CxgtB[hCxgKeyHitŒ`
    public void OnKeyHit(char ch) { //KeyHitCxg𔭐郁\bh
        if (KeyHit != null) //CxgtB[h()łȂ
            KeyHit(ch); //Cxg𔭐
    }
}
class Show { //Cxg̔ɂs\bhNX
    int sum = 0; //vl
    public void keyshow(char ch) { //Cxg̔ɂs\bh
        if (Char.IsDigit(ch)) { //10i(0`9̃L[Ă)H
            int a = (int)Char.GetNumericValue(ch); //
            sum += a; //vɑ
            Console.WriteLine("+ {0}", a); //ꂽL[̒l\
            Console.WriteLine("= {0}", sum); //vl\
        } else if (ch == 'c') { //c(cL[Ă)H
            sum = 0; //vlNA
            Console.WriteLine("vNA܂");
        } else { //10i,'c'ȊOł
            return; //Ȃ
        }
    }
}
class event02 {
    public static void Main() {
        ConsoleKeyInfo cki; //L[𓾂邽߂̃f[^\\
        EventClass ec = new EventClass(); //Cxg̔SNX̃CX^X𐶐
        Show s = new Show(); //Cxg̔ɂs\bhNX̃CX^X𐶐
        ec.KeyHit += new Handler(s.keyshow); //CxgɃ}`LXgfQ[Vw肷邱Ƃœo^
        while (true) { //[v
            if (Console.KeyAvailable) { //L[ĂH
                cki = Console.ReadKey(true); //̃L[𓾂
                if (cki.KeyChar == 'x') { //xL[ł
                    break; //JԂI
                } else { //xL[ȊOH
                    ec.OnKeyHit(cki.KeyChar); //Cxg𔭐
                }
            }
        }
    }
}

AWKFp.315 event02.cs

Ep.3192sڂ̂ƂA_ŏ悤

쐬

//AWKFp.315 event02.cs
using System;
delegate void Handler(char ch); //fQ[g̐錾(߂lȂAL)
class EventClass { //Cxg̔SNX
    public event Handler KeyHit; //CxgtB[hCxgKeyHitŒ`
    public void OnKeyHit(char ch) { //KeyHitCxg𔭐郁\bh
        if (KeyHit != null) //CxgtB[h()łȂ
            KeyHit(ch); //Cxg𔭐
    }
}
class Show { //Cxg̔ɂs\bhNX
    int sum = 0; //vl
    public void keyshow(char ch) { //Cxg̔ɂs\bh
        if (Char.IsDigit(ch)) { //10i(0`9̃L[Ă)H
            int a = (int)Char.GetNumericValue(ch); //
            sum += a; //vɑ
            Console.WriteLine("+ {0}", a); //ꂽL[̒l\
            Console.WriteLine("= {0}", sum); //vl\
        } else if (ch == 'c') { //c(cL[Ă)H
            sum = 0; //vlNA
            Console.WriteLine("vNA܂");
        } else { //10i,'c'ȊOł
            return; //Ȃ
        }
    }
}
class event02 {
    public static void Main() {
        ConsoleKeyInfo cki; //L[𓾂邽߂̃f[^\\
        EventClass ec = new EventClass(); //Cxg̔SNX̃CX^X𐶐
        Show s = new Show(); //Cxg̔ɂs\bhNX̃CX^X𐶐
        ec.KeyHit += (c) => s.keyshow(c); //yύXzCxgɃ}`LXgfQ[Vw肷邱Ƃœo^
        while (true) { //[v
            if (Console.KeyAvailable) { //L[ĂH
                cki = Console.ReadKey(true); //̃L[𓾂
                if (cki.KeyChar == 'x') { //xL[ł
                    break; //JԂI
                } else { //xL[ȊOH
                    ec.OnKeyHit(cki.KeyChar); //Cxg𔭐
                }
            }
        }
    }
}

eLXgю\Fp.320uKv

Q[JKFhԂA̕`A^CgʂƉʑJ Ȃ

e[}19 `̓hԂ

EhԂł̓y̑ɃuVp
EuV@\񋟂̂System.Drawing.BrushNXA͒ۃNXŁAۂ̕`ɂ͔hNXp
Eł\ȒPȂ̂hNXSystem.Drawing.SolidBrush
ẼNX̃RXgN^Color񋓑̗̂񋓎qnƂŁAPFp̃uV
EF Brush b = new SolidBrush(Color.Red); //Ԃ̒PFuV𐶐
E`̓hԂ́ADrawRectangleɎAFillRectangleɃuVAXWAYWAAw肷
EF e.Graphics.FillRectangle(mybrush, 78, 411, 485, 64); //GA̓hԂ

K17 GA̓hԂ

EGAԐFœhԂ
ES~͍폜悤

쐬

//K17 GA̓hԂ
using System; //tH[AvP[VɕK{
using System.Windows.Forms; //tH[AvP[VɕK{
using System.Drawing; //Imagep
class Program : Form { //FormNXp
    Image backb = Image.FromFile("backb.bmp"); //wi摜̓Ǎ
    Image enemy = Image.FromFile("enemy.gif"); //ACe摜̓Ǎ
    Image burn = Image.FromFile("burn.gif"); //ʗp摜̓Ǎ
    Pen mypen = new Pen(Color.Red, 2); //y𐶐(l͐ԁA2)
    Brush bred = new SolidBrush(Color.Red); //yǉzuV𐶐(Ԃ̒PF)
    void DrawCircle(PaintEventArgs e, Pen p, int x, int y, int r) { //yASWAaw肵ĉ~`
        e.Graphics.DrawEllipse(p, x - r, y - r, 2 * r, 2 * r); //~̕`Ă
    }
    protected override void OnPaint(PaintEventArgs e) { //Form̃\bhI[o[Ch
        base.OnPaint(e); //܂AFormNXɂ郁\bh̓e({ĕ`揈)s
        e.Graphics.DrawImage(backb, 0, 0); //wi摜(0,0)`
        e.Graphics.FillRectangle(bred, 78, 411, 485, 64); //yύXzGA̕`
        //int mx = backb.Width / 2, my = backb.Height / 2; //y폜zW𓾂
        //mypen.Color = Color.Yellow; //y폜zyFF
        //mypen.Width = 10;  //y폜zy10
        //for (int i = 1; i <= 4; i++) { //yȉ폜z4JԂ
        //    DrawCircle(e, mypen, mx, my, 15 * i); //yASWAaw肵ĉ~`
        //}
    }
    void OnKeyDown(object o, KeyEventArgs e) { //L[{[hꂽɌĂ΂郁\bh
        if(e.KeyCode.ToString() == "Escape") { //EscL[ꂽ
            Close(); //tH[AvP[VI
        }
    }
    Program() { //RXgN^
        KeyDown += new KeyEventHandler(OnKeyDown); //L[{[hꂽɌĂ΂郁\bho^
    }
    static void Main() { //public̎w͔C
        Program p = new Program(); //ptH[̃CX^X𐶐
        p.Width = 660; //CX^XWidthvpeBɕ
        p.Height = 520; //CX^XHeightvpeBɍ
        p.Text = "Game"; //CX^XTextvpeBɃtH[
        p.ControlBox = false; //ControlBox\ɂ
        p.FormBorderStyle = FormBorderStyle.Fixed3D; //tH[TCYύX֎~
        Application.Run(p); //CX^Xʂɏo
    }
}

e[}20 `̔hԂ

ESolidBrushNX̃RXgN^Color񋓑̗̂񋓎qnɁAR|[lglColorIuWFNgnƂŁAxwł
ER|[lgl0s255܂Ŏw\Ȃ̂ŁA127ŔɂȂ
EFsȐԁF(0, 255, 0, 0)AȐԁF(127, 255, 0, 0)
ER|[lglColorIuWFNg𐶐ɂ́AColor.FromArgb(R|[lgl, Redl, Greenl, Bluel)p

K18 GA̔hԂ

EԐFŋ`̔GA𔼓iR|[lgl=63jœhԂ
ETCYŐԐF̋``ƂŌ₷悤

쐬

//K18 GA̔hԂ
using System; //tH[AvP[VɕK{
using System.Windows.Forms; //tH[AvP[VɕK{
using System.Drawing; //Imagep
class Program : Form { //FormNXp
    Image backb = Image.FromFile("backb.bmp"); //wi摜̓Ǎ
    Image enemy = Image.FromFile("enemy.gif"); //ACe摜̓Ǎ
    Image burn = Image.FromFile("burn.gif"); //ʗp摜̓Ǎ
    Pen mypen = new Pen(Color.Red, 2); //y𐶐(l͐ԁA2)
    Brush bred = new SolidBrush(Color.FromArgb(63, 255, 0, 0)); //yύXzuV𐶐(Ԃ̓F)
    void DrawCircle(PaintEventArgs e, Pen p, int x, int y, int r) { //yASWAaw肵ĉ~`
        e.Graphics.DrawEllipse(p, x - r, y - r, 2 * r, 2 * r); //~̕`Ă
    }
    protected override void OnPaint(PaintEventArgs e) { //Form̃\bhI[o[Ch
        base.OnPaint(e); //܂AFormNXɂ郁\bh̓e({ĕ`揈)s
        e.Graphics.DrawImage(backb, 0, 0); //wi摜(0,0)`
        e.Graphics.FillRectangle(bred, 78, 411, 485, 64); //yύXzGA𓧖ԂœhԂ
        e.Graphics.DrawRectangle(mypen, 78, 411, 485, 64); //yǉzGA̕`
    }
    void OnKeyDown(object o, KeyEventArgs e) { //L[{[hꂽɌĂ΂郁\bh
        if(e.KeyCode.ToString() == "Escape") { //EscL[ꂽ
            Close(); //tH[AvP[VI
        }
    }
    Program() { //RXgN^
        KeyDown += new KeyEventHandler(OnKeyDown); //L[{[hꂽɌĂ΂郁\bho^
    }
    static void Main() { //public̎w͔C
        Program p = new Program(); //ptH[̃CX^X𐶐
        p.Width = 660; //CX^XWidthvpeBɕ
        p.Height = 520; //CX^XHeightvpeBɍ
        p.Text = "Game"; //CX^XTextvpeBɃtH[
        p.ControlBox = false; //ControlBox\ɂ
        p.FormBorderStyle = FormBorderStyle.Fixed3D; //tH[TCYύX֎~
        Application.Run(p); //CX^Xʂɏo
    }
}

e[}21 ̕`ir܂Łj

EtH[AvP[Vł̓tHg⏑w肵ĕʏɕ`ł
E̎AtHgAuVAʒuwł
EtHǵASystem.Drawing.FontNX̃RXgN^Őł
ẼRXgN^͑̃I[o[[h邪AtHgƃ|Cg(傫)w肷 Font(string, float)֗
EF Font f = new Font("CI", 15);
EȂǂ̏w肷ɂFont(string, float, FontStyle)pƗǂ
EFontStyleSystem.Drawing.FontStyle񋓌^ŁA񋓎qBoldőɂł
iȉj

oFK18 GA̔hԂ

Q[JK\F̕`AʑJځAʍĕ` Ȃ
